package com.wzq.permission.client.service;

import java.util.List;

import com.wzq.permission.client.model.Pager;
import com.wzq.permission.client.model.admin.DataPermissionModel;
import com.wzq.permission.client.model.admin.MenuModel;
import com.wzq.permission.client.model.admin.RoleDataPerissionModel;
import com.wzq.permission.client.model.admin.RoleMenuModel;
import com.wzq.permission.client.model.admin.RoleModel;

public interface RoleService {

	void add(RoleModel role);

	void update(RoleModel role);

	void updateBySelective(RoleModel role);

	void delete(Object id);

	int queryByCount(RoleModel role);

	List<RoleModel> queryList(RoleModel role,Pager pager);

	RoleModel queryById(Object id);
	
	/**
	 * 分配角色菜单权限保存
	 * @param roleMenuList  菜单list
	 * @param roleId  角色id
	 */
	void distributionSave(List<RoleMenuModel> roleMenuList,Long roleId);
	/**
	 * 根据角色id 获取角色菜单
	 * @param roleId 角色id
	 * @return
	 */
	List<String> getMenuIdByRoleId(Long roleId);
	/**
	 * 根据角色roleid查询 角色数据权限
	 * @param roleId
	 * @return
	 */
	List<Long> getRoleDataPerissionByRoleId(Long roleId);
	/**
	 * 根据系统id  查询系统数据权限 
	 * @param applicationId
	 * @param rangeType 类型范围
	 * @return
	 */
	List<DataPermissionModel> queryApplicationDataList(Long applicationId,Integer rangeType);
	/**
	 * 根据roleId 删除角色的数据权限
	 * @param roleId
	 */
	void deleteDataPerissionByARoleId(Long roleId);
	
	
	/**
	 * 保存 角色数据权限 
	 * @param roleId 角色id
	 * @param roleDataPerissionModelList 数据权限list
	 */
	void saveDataPerssion(List<RoleDataPerissionModel> roleDataPerissionModelList,Long roleId);
	
	//===========================华丽的分隔线============================================================================================
	/**
	 * 根据roleId获取权限列表
	 * @param roleId 角色id
	 * @return List<MenuModel>
	 */
	List<MenuModel> queryPermissionsByRoleId(Long roleId);
	
	void logicDelete(Long[] roleIds);
	
	/**
     * 
     * 判断角色是否存在   
     * @author 陈剑飞    
     * @Title: isExist    
     * @param role 角色对象
     * @Return: int 返回值
     */
    int isExist(RoleModel role);
}
